package com.javalab._7thread._1Create._3Callable;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Test {
    public static void main(String[] args) {
        MyCallable myCallable = new MyCallable(1, 0);
        FutureTask<Integer> task = new FutureTask<>(myCallable);
        // 创建线程
        Thread thread = new Thread(task);
        // 启动线程
        thread.start();
        // 获取结果，会等待
        try {
            task.get();
            // 支持中断执行的线程
//            task.cancel(true);
            // 指定等待多久
//            task.get(1000, TimeUnit.MILLISECONDS);
        } catch (InterruptedException e) {
            // 执行被中断则会进入
            e.printStackTrace();
        } catch (ExecutionException e) {
            // 除零会导致线程执行异常 java.lang.ArithmeticException: / by zero
            e.printStackTrace();
        }
    }
}
